package 纯数组;

import com.alibaba.fastjson.JSON;

import java.util.concurrent.DelayQueue;
import java.util.concurrent.locks.ReentrantLock;

public class JZ61扑克牌中的顺子 {

    /**
     * 从扑克牌中随机抽5张牌，判断是不是一个顺子，即这5张牌是不是连续的。2
     * ～10为数字本身，A为1，J为11，Q为12，K为13，而大、小王为 0 ，可以看成任意数字。A 不能视为 14。
     *
     * 示例 1:
     * 输入: [1,2,3,4,5]
     * 输出: True
     *  
     * 示例 2:
     * 输入: [0,0,1,2,5]
     * 输出: True
     *  
     * 限制：
     * 数组长度为 5 
     * 数组的数取值为 [0, 13] .
     */

    public boolean isStraight(int[] nums) {

        this.sort(nums);

        int count=0;

        for (int i = 0; i < nums.length; i++) {
            if(nums[i]==0){
                count++;
            }else{
                break;
            }
        }

        int lastNum=nums[count];
        for (int i = count+1; i < nums.length; i++) {
            if(nums[i]==lastNum){
                return false;
            }
            if(lastNum+1!=nums[i]){
                int sub=nums[i]-lastNum-1;
                if(count>=sub){
                    count-=sub;
                }else{
                    return false;
                }
            }
            lastNum=nums[i];
        }

        return true;
    }

    //数量少,使用冒泡排序
    private void sort(int[] nums){

        for (int i = 0; i < nums.length; i++) {
            for (int j = i+1; j < nums.length; j++) {
                if(nums[i]>nums[j]){
                    swap(nums,i,j);
                }
            }
        }

    }

    private void swap(int[] arr,int left,int right) {
        int temp=arr[left];
        arr[left]=arr[right];
        arr[right]=temp;
    }

    public static void main(String[] args) {
    }

}
